<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>topic 1  &middot; sitename</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">


<meta name="description" content="" />

<meta name="keywords" content="">


<meta property="og:title" content="topic 1  &middot; sitename ">
<meta property="og:site_name" content="sitename"/>
<meta property="og:url" content="https://lvzongcheng.gitee.io/topics/topic-1/" />
<meta property="og:locale" content="en-EN">


<meta property="og:type" content="website" />



<link href="https://lvzongcheng.gitee.io/topics/topic-1/index.xml" rel="alternate" type="application/rss+xml" title="topic 1" />

<link rel="canonical" href="https://lvzongcheng.gitee.io/topics/topic-1/" />

<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://lvzongcheng.gitee.io/touch-icon-144-precomposed.png">
<link href="https://lvzongcheng.gitee.io/favicon.png" rel="icon">

<meta name="generator" content="Hugo 0.60.0" />

  <!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<link href='https://fonts.googleapis.com/css?family=Merriweather:300%7CRaleway%7COpen+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/highlight/default.css">

  
  
	<script>
	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

	  ga('create', 'Your Google Analytics tracking code', 'auto');
	  ga('send', 'pageview');

	</script>

</head>
<body>
  <main id="main-wrapper" class="container main_wrapper has-sidebar">
    <header id="main-header" class="container main_header">
  <div class="container brand">
  <div class="container title h1-like">
  <a class="baselink" href="https://lvzongcheng.gitee.io">
  LvZongCheng

</a>

</div>

  
<div class="container topline">
  
  淡定 执著 进取 自律


</div>


</div>

  <nav class="container nav primary no-print">
  

<a class="homelink" href="https://lvzongcheng.gitee.io">home</a>


  
<a href="https://lvzongcheng.gitee.io/framework" title="Show list of Frameworks">Frameworks</a>

<a href="https://lvzongcheng.gitee.io/java" title="Show list of Java">Java</a>

<a href="https://lvzongcheng.gitee.io/linux" title="Show list of Linux">Linux</a>

<a href="https://lvzongcheng.gitee.io/redis" title="Show list of Redis">Redis</a>

<a href="https://lvzongcheng.gitee.io/sql" title="Show list of SQL">SQL</a>

<a href="https://lvzongcheng.gitee.io/Spring" title="Show list of Spring">Spring</a>

<a href="https://lvzongcheng.gitee.io/tools" title="Show list of Tools">Tools</a>

<a href="https://lvzongcheng.gitee.io/webpage" title="Show list of WebPage">WebPage</a>

<a href="https://lvzongcheng.gitee.io/information" title="Show list of information">information</a>

<a href="https://lvzongcheng.gitee.io/network" title="Show list of network">network</a>

<a href="https://lvzongcheng.gitee.io/%E5%BE%AE%E6%9C%8D%E5%8A%A1" title="Show list of 微服务">微服务</a>

<a href="https://lvzongcheng.gitee.io/%E6%80%BB%E7%BB%93" title="Show list of 总结">总结</a>

<a href="https://lvzongcheng.gitee.io/%E6%9C%BA%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96" title="Show list of 机器自动化">机器自动化</a>

<a href="https://lvzongcheng.gitee.io/%E6%B1%87%E7%BC%96" title="Show list of 汇编">汇编</a>

<a href="https://lvzongcheng.gitee.io/%E8%AE%B0%E4%BA%8B%E6%9C%AC" title="Show list of 记事本">记事本</a>


</nav>

<div class="container nav secondary no-print">
  
<a id="contact-link-email" class="contact_link" rel="me" aria-label="Email" href="mailto:Lyc19880405@163.com">
  <span class="fa fa-envelope-square"></span></a>



<a id="contact-link-github" class="contact_link" rel="me" aria-label="Github" href="https://github.com/enten/hugo-boilerplate">
  <span class="fa fa-github-square"></span></a>




 


















</div>


  

</header>


<section id="main-content" class="container main_content">
  <header class="container">
    <h1>topic 1
</h1>

  </header>
  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/tools/dockercomdand/">dockerComdand
</a>
</h2>

</div>

  <p class="container content">
  
  
    docker description
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/tools/git/">Git
</a>
</h2>

</div>

  <p class="container content">
  
  
    Git概念 1.1. Git库中由三部分组成  Git 仓库就是那个.git 目录，其中存放的是我们所提交的文档索引内容，Git 可基于文档索引内容对其所管理的文档进行内容追踪，从而实现文档的版本控制。.git目录位于工作目录内。  1） 工作目录：用户本地的目录；2） Index（索引）：将工作目录下所有文件（包含子目录）生成快照，存放到一个临时的存储区域，Git 称该区域为索引。 3） 仓库：将索引通过commit命令提交至仓库中，每一次提交都意味着版本在进行一次更新。1.2. 使用Git时的初始化事项 1.2.1. Git初始化配置 1） 配置使用git仓库的人员姓名 git config &ndash;global user.name &ldquo;Your Name Comes Here&rdquo; 2） 配置使用git仓库的人员email git config &ndash;global user.email you@yourdomain.example.com 1.2.2. Git文档忽略机制 工作目录中有一些文件是不希望接受Git 管理的，譬如程序编译时生成的中间文件等等。Git 提供了文档忽略机制，可以将工作目录中不希望接受Git 管理的文档信息写到同一目录下的.gitignore 文件中。 例如：工作目录下有个zh目录，如果不想把它加入到Git管理中，则执行： echo “zh” &gt; .gitignore git add . 有关gitignore 文件的诸多细节知识可阅读其使用手册：man gitignore
1.3. Git与Repo的比较  Git操作一般对应一个仓库，而Repo操作一般对应一个项目，即一个项目会由若干仓库组成。  例如，在操作整个Recket项目时使用Repo，而操作其中的某个仓库时使用Git。在包含隐藏目录.git的目录下执行git操作。
2. Git help  Git help 获取git基本命令  （如果要知道某个特定命令的使用方法，例如：使用Git help clone，来获取git clone的使用方法）
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/framework/lucene/">Lucene
</a>
</h2>

</div>

  <p class="container content">
  
  
    #创建
增加 修改 删除 #全文检索
分词器
查询 &ndash;
Lucene索引库的查询： 查询有两种方法： ####第一种：Query的子类进行查询 TermQuery： 根据关键字进行查询，查询时需指定查询的域和查询的关键字。
NumericRangeQuery： 可以在数值类型的域上，按照范围进行查询。 需要使用NumericRangeQuery的静态方法来创建查询对象，而不是直接new一个查询对象。
BooleanQuery: 多条件查询，可以向booleanQuery对象中添加query对象。query和query之间有三种关系 Occur.SHOULD	=OR Occur.MUST	=AND Occur.MUST_NOT	=NOT
MachAllDocsQuery: 匹配索引库中的所有document。
####第二种查询方法： 使用QueryParser，需要使用到分析器。需要引用到lucene-queryparser-4.10.3.jar包。
查询语法： 写法1： 域名:查询关键字 AND 域名:查询关键字2 域名:查询关键字 OR 域名:查询关键字2 域名:查询关键字 NOT 域名:查询关键字2
写法2： 域名:查询关键字 +域名:查询关键字2 域名:查询关键字 域名:查询关键字2 域名:查询关键字 -域名:查询关键字2
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/webpage/markdown/">Markdown
</a>
</h2>

</div>

  <p class="container content">
  
  
    Markdown description
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/tools/maven/">Maven
</a>
</h2>

</div>

  <p class="container content">
  
  
    Maven description
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/framework/memcached/">Memcached
</a>
</h2>

</div>

  <p class="container content">
  
  
    Java项目添加 memcahced java memcached client没有官方的maven repository可供使用，因此使用时需要手动将其安装到本地repository java memcached client的jar包下载地址 目前2.6.6版本的java memcached client要依赖slf4j-simple、slf4j-api、commons-pool三个包，依此我们可以为其编辑一个pom文件， 将java memcached client的jar包和pom文件一起安装，解决java memcached client对其他jar包的依赖。安装命令：
mvn install:install-file -Dfile=F:\comm\youboy\java_memcached-release_2.6.6\java_memcached-release_2.6.6.jar -DpomFile=F:\comm\youboy\java_memcached-release_2.6.6\pom.xml
&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt; &lt;project xsi:schemaLocation=&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34; xmlns=&#34;http://maven.apache.org/POM/4.0.0&#34; xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.lyz&lt;/groupId&gt; &lt;artifactId&gt;lyz&lt;/artifactId&gt; &lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;war&lt;/packaging&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.danga&lt;/groupId&gt; &lt;artifactId&gt;java-memcached&lt;/artifactId&gt; &lt;version&gt;2.6.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.slf4j&lt;/groupId&gt; &lt;artifactId&gt;slf4j-simple&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.slf4j&lt;/groupId&gt; &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;commons-pool&lt;/groupId&gt; &lt;artifactId&gt;commons-pool&lt;/artifactId&gt; &lt;version&gt;1.5.6&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/project&gt; Memcached 安装 一、 检查libevent 首先检查系统中是否安装了libevent
rpm -qa|grep libevent  如果安装了则查看libevent的安装路径，后续安装时需要用到
rpm -ql libevent  如果没有安装，则先安装libevent
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/framework/mybatis/">MyBatis
</a>
</h2>

</div>

  <p class="container content">
  
  
    #：是占位符，可以防止sql注入
$：直接追加在sql中，一般会有sql注入问题
MyBatis 延迟加载，一级缓存，二级缓存设置 http://www.cnblogs.com/QQParadise/articles/5109633.html 未完待续
什么是延迟加载  resultMap中的association和collection标签具有延迟加载的功能。 延迟加载的意思是说，在关联查询时，利用延迟加载，先加载主信息。使用关联信息时再去加载关联信息。 设置延迟加载  需要在SqlMapConfig.xml文件中，在&lt;settings&gt;标签中设置下延迟加载。lazyLoadingEnabled、aggressiveLazyLoading &lt;!-- 开启延迟加载 --&gt;&lt;settings&gt;&lt;!-- lazyLoadingEnabled:延迟加载启动，默认是false --&gt;&lt;setting name=&quot;lazyLoadingEnabled&quot; value=&quot;true&quot;/&gt;&lt;!-- aggressiveLazyLoading：积极的懒加载，false的话按需加载，默认是true --&gt;&lt;setting name=&quot;aggressiveLazyLoading&quot; value=&quot;false&quot;/&gt;&lt;!-- 开启二级缓存，默认是false --&gt;&lt;setting name=&quot;cacheEnabled&quot; value=&quot;true&quot;/&gt;&lt;/settings&gt;什么是查询缓存 Mybatis的一级缓存是指SqlSession。一级缓存的作用域是一个SqlSession。Mybatis默认开启一级缓存。
在同一个SqlSession中，执行相同的查询SQL，第一次会去查询数据库，并写到缓存中；第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作，则SqlSession的缓存清空。
Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容，多个SqlSession共享。Mybatis需要手动设置启动二级缓存。 在同一个namespace下的mapper文件中，执行相同的查询SQL，第一次会去查询数据库，并写到缓存中；第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作，则二级缓存清空。
一级缓存区域是根据SqlSession为单位划分的。
每次查询会先去缓存中找，如果找不到，再去数据库查询，然后把结果写到缓存中。Mybatis的内部缓存使用一个HashMap，key为hashcode+statementId+sql语句。Value为查询出来的结果集映射成的java对象。 SqlSession执行insert、update、delete等操作commit后会清空该SQLSession缓存。
二级缓存是mapper级别的。Mybatis默认是没有开启二级缓存。
第一次调用mapper下的SQL去查询用户信息。查询到的信息会存到该mapper对应的二级缓存区域内。
第二次调用相同namespace下的mapper映射文件中相同的SQL去查询用户信息。会去对应的二级缓存内取结果。
如果调用相同namespace下的mapper映射文件中的增删改SQL，并执行了commit操作。此时会清空该namespace下的二级缓存。
开启二级缓存
1、 在核心配置文件SqlMapConfig.xml中加入以下内容（开启二级缓存总开关）： cacheEnabled设置为 true
2、在映射文件中，加入以下内容，开启二级缓存：
实现序列化 由于二级缓存的数据不一定都是存储到内存中，它的存储介质多种多样，所以需要给缓存的对象执行序列化。
如果该类存在父类，那么父类也要实现序列化。
禁用二级缓存
该statement中设置userCache=false可以禁用当前select语句的二级缓存，即每次查询都是去数据库中查询，默认情况下是true，即该statement使用二级缓存。
刷新二级缓存
配置Log4j以便查看MyBatis操作数据库过程 在src/main/resources 添加log4j.properties 配置文件
#全局配置log4j.rootLogge=Error,stdout#Mybatis 日志配置log4j.
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/tools/notepad/">notepad
</a>
</h2>

</div>

  <p class="container content">
  
  
     notepad description
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/framework/spring/">Spring
</a>
</h2>

</div>

  <p class="container content">
  
  
    1.2Spring的事务管理: spring中支持一下2中事务声明方式    编程式事务 当系统需要明确的，细粒度的控制各个事务的边界，应选择编程式事务   2.声明式事务 当系统对于事务的控制粒度较粗时，应该选择申明式事务  1.2.1 Spring的事务管理 JavaEE的开发需要分成三层:
 事务的开发,事务一般都加在Service层.  1.2.2 Spring提供管理事务的API PlatformTransactionManager	:平台事务管理器.
|&ndash;获得事务,操作事务.
TransactionDefinition	:事务定义信息:
|&ndash;事务定义信息(隔离、传播、超时、只读)
TransactionStatus	:事务状态: 关系:
PlatformTransactionManager 根据 TransactionDefinition对事务定义的信息管理事务,在管理事务的过程中产生一些状态:由TransactionStatus记录 用来管理事务的真正接口:
 org.springframework.jdbc.datasource.DataSourceTransactionManager	使用Spring JDBC或iBatis 进行持久化数据时使用
org.springframework.orm.hibernate3.HibernateTransactionManager	使用Hibernate3.0版本进行持久化数据时使用
org.springframework.orm.jpa.JpaTransactionManager	使用JPA进行持久化时使用
org.springframework.jdo.JdoTransactionManager	当持久化机制是Jdo时使用
org.springframework.transaction.jta.JtaTransactionManager	使用一个JTA实现来管理事务，在一个事务跨越多个资源时必须使用
 TransactionDefinition: 事务特性:ACID
原子性 一致性 隔离性 持久性. 隔离性引发安全性问题:
三个读问题:
|&ndash; 脏读:一个事务读到另一个事务未提交数据
|&ndash; 不可重复读:一个事务读到另一个事务 已经提交 update 数据.
|&ndash; 虚读:一个事务读到另一个事务 已经提交 insert 数据.
SOLATION_XXX	:事务隔离级别.  DEFAULT	:默认的.
  


</p>


  
</article>

  
    <article class="container content summary">
  <div class="container hat">
  <h2><a href="https://lvzongcheng.gitee.io/framework/springmvc/">SpringMVC
</a>
</h2>

</div>

  <p class="container content">
  
  
    模型图 时序图  分析图 请求数据过程  1. 用户向服务器发送请求，请求被Spring 前端控制Servelt DispatcherServlet捕获；2. DispatcherServlet对请求URL进行解析，得到请求资源标识符（URI）。然后根据该URI，调用HandlerMapping获得该Handler配置的所有相关的对象（包括Handler对象以及Handler对象对应的拦截器），最后以HandlerExecutionChain对象的形式返回；3. DispatcherServlet 根据获得的Handler，选择一个合适的HandlerAdapter。（附注：如果成功获得HandlerAdapter后，此时将开始执行拦截器的preHandler(...)方法）4. 提取Request中的模型数据，填充Handler入参，开始执行Handler（Controller)。 在填充Handler的入参过程中，根据你的配置，Spring将帮你做一些额外的工作：HttpMessageConveter： 将请求消息（如Json、xml等数据）转换成一个对象，将对象转换为指定的响应信息数据转换：对请求消息进行数据转换。如String转换成Integer、Double等数据格式化：对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等数据验证： 验证数据的有效性（长度、格式等），验证结果存储到BindingResult或Error中5. Handler执行完成后，向DispatcherServlet 返回一个ModelAndView对象；6. 根据返回的ModelAndView，选择一个适合的ViewResolver（必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ；7. ViewResolver 结合Model和View，来渲染视图8. 将渲染结果返回给客户端。 SpringMVC 配置  配置前端控制器 在web.xml中  &lt;!--配置Springmvc前端控制器 --&gt;&lt;servlet&gt;&lt;servlet-name&gt;springmvc&lt;/servlet-name&gt;&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;&lt;!--指定配置文件所在位置 不配置init-param 默认到/WEB-INF/找配置文件/WEB-INF/servlet的名称-servlet.xml--&gt;&lt;init-param&gt;&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;&lt;param-value&gt;classpath:springmvc.xml&lt;/param-value&gt;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;&lt;/init-param&gt;&lt;/servlet&gt;&lt;servlet-mapping&gt;&lt;servlet-name&gt;springmvc&lt;/servlet-name&gt;&lt;!--*.action 请求路径必须是.action第一种:/* 拦截所有请求 弊端 /WEB-INF/jsp/items.
  


</p>


  
</article>

  
  
<div class="container pagination">
  


<a aria-label="First" href="https://lvzongcheng.gitee.io/topics/topic-1/">
  <span aria-hidden="true">««</span>
</a>

<a aria-label="Previous" href="https://lvzongcheng.gitee.io/topics/topic-1/page/2/">
  <span aria-hidden="true">«</span>
</a>


<a href="https://lvzongcheng.gitee.io/topics/topic-1/">
  1
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/2/">
  2
</a>

<a class="active" href="https://lvzongcheng.gitee.io/topics/topic-1/page/3/">
  3
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/4/">
  4
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/5/">
  5
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/6/">
  6
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/7/">
  7
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/8/">
  8
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/9/">
  9
</a>

<a href="https://lvzongcheng.gitee.io/topics/topic-1/page/10/">
  10
</a>


<a aria-label="Next" href="https://lvzongcheng.gitee.io/topics/topic-1/page/4/">
  <span aria-hidden="true">»</span>
</a>

<a aria-label="Last" href="https://lvzongcheng.gitee.io/topics/topic-1/page/10/">
  <span aria-hidden="true">»»</span>
</a>


</div>


</section>
      <footer id="main-footer" class="container main_footer">
  

  <div class="container nav foot no-print">
  
<a href="https://lvzongcheng.gitee.io/license">license</a>


  <a class="toplink" href="#">back to top</a>

</div>

  <div class="container credits">
  
<div class="container footline">
  
  code with <!-- raw HTML omitted --><!-- raw HTML omitted -->


</div>


  
<div class="container copyright">
  
  (c) 2015 yourname.


</div>


</div>

</footer>

    </main>
    
<script type="text/javascript">
  (function() {
    
    
    if (window.location.hostname == "localhost")
      return;
    var dsq = document.createElement('script'); dsq.async = true; dsq.type = 'text/javascript';
    dsq.src = '//your_disqus_shortname.disqus.com/count.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>



<script src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>



    
  </body>
</html>

